/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package db_interaction;

import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.Session;

/**
 *
 * @author Neves
 */
@Entity
@Table(name = "publicacao")
public class Publicacao implements Serializable {

    @Id
    @GeneratedValue
    private int Publicacao_id;
    @ManyToOne
    @JoinColumn(name = "Publicacao_Utilizador_id")
    private Utilizador utilizador;
    @Basic
    @Column(name = "Publicacao_descricao")
    private String Publicacao_descricao;
    @Basic
    @Column(name = "Publicacao_activo")
    private boolean Publicacao_activo;

    //GETS
    public int GETPublicacao_id() {
        return this.Publicacao_id;
    }

    public Utilizador GETPub_Utilizador() {
        return this.utilizador;
    }

    public String GETPublicação_descricao() {
        return this.Publicacao_descricao;
    }

    public boolean GETPublicação_activo() {
        return this.Publicacao_activo;
    }

    //SETS
    public void SETPublicacao_id(int Publicacao_id) {
        this.Publicacao_id = Publicacao_id;
    }

    public void SETPub_Utilizador(Utilizador utilizador) {
        this.utilizador = utilizador;
    }

    public void SETPublicação_descricao(String Publicacao_descricao) {
        this.Publicacao_descricao = Publicacao_descricao;
    }

    public void SETPublicação_activo(boolean Publicacao_activo) {
        this.Publicacao_activo = Publicacao_activo;
    }

    //DB access
    public Boolean insertEntity(Publicacao pu) {

        try {
            Session s = NewHibernateUtil.getSessionFactory();
            s.beginTransaction();
            s.save(pu);
            s.getTransaction().commit();

            return true;

        } catch (Exception e) {
            return false;
        }
    }

    public Publicacao SelectEntity(Publicacao pu) {
        Publicacao publ = null;

        //returns sellected friend if successfull
        //return null
        try {
            Session s = NewHibernateUtil.getSessionFactory();
            publ = (Publicacao) s.load(Amigos.class, pu.GETPublicacao_id());
            s.getTransaction().commit();
            return publ;

        } catch (Exception e) {
            return publ;
        }
    }

    public int UpdateEntity(Publicacao pu) {
        //returns 1 if successfull
        //return -1 if error
        try {
            Session s = NewHibernateUtil.getSessionFactory();
            s.save(pu);
            s.getTransaction().commit();
            return 1;

        } catch (Exception e) {
            return -1;
        }
    }
}
